package csw;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class J21HelloJDBC {
	public static void main(String[] agrs) {
		String DRV = "oracle.jdbc.driver.OracleDriver";
		String URL = "jdbc:oracle:thin:@127.0.0.1:1521:xe";
		String USR = "scott";
		String PWD = "TIGER";

		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;

		String sql = " select *from emp";

		try {
			// 1.JDBC 드라이버 로드
			// forName 메서드로 동적으로 객체 생성
			Class.forName(DRV);
			// 2.데이터 베이스 연결
			// getConnection 메서드에 접속정보가 있는 URL과 계정정보 및 암호인 USR, PWD를 매개변수로 넘김
			conn = DriverManager.getConnection(URL, USR, PWD);
			System.out.println("오라클 서버 접속 성공");
			// 3. 실행할 SQL 질의문 생성
			// SQL 질의문은 String 변수에 작성 prepareStatement 메서드를 통해
			// prepareStatement메서드를 통해
			// preparestatement 객체로 생성
			pstmt = conn.prepareStatement(sql);
			// 4.SQL 질의문 실행
			// executeQuery 메서드로
			// SQL 질의문을 실행할 수 있음
			// 5.실행 결과 집합 받기
			// SQL 질의문이 select 라면
			// 실행 후 결과집합이 발생됨
			// 이것을 받으려면 ResultSet 객체를 이용
			rs = pstmt.executeQuery();
			StringBuilder sb = new StringBuilder();
			// 6.결과집합 처리
			// next메서드로 결과존재 여부를 확인하고
			// getString 메서드로 해당 필드값을 출력

			while (rs.next()) {
				sb.append(rs.getString(5)).append("/")
						.append(rs.getString("ename")).append("/")
						.append(rs.getString("job")).append("/")
						.append(rs.getString("sal")).append("\n");
			}
			System.out.println(sb);

		} catch (ClassNotFoundException cnfe) {
			System.out.println("JDBC드라이버를 확인하세요");
		} catch (Exception ex) {
			ex.printStackTrace();
		} finally {
			// 7.연결해제
			// JDBC 프로그래밍에 사용된
			// 모든 객체들은 메모리에서 해제시킴
			if (rs != null)
				try {
					rs.close();
				} catch (Exception e) {	}
			if (pstmt != null)
				try {
					pstmt.close();
				} catch (Exception e) {	}
			if (conn != null)
				try {
					conn.close();
				} catch (Exception e) {	}
		}

	}// main
}// class
